System.Collections.ObjectModel.KeyedCollection<TKey,TItem>.ChangeItemKey method
This article provides supplementary remarks to the reference documentation for this API.
The ChangeItemKey(TItem, TKey) method does not modify the key embedded in item
; it simply replaces the key saved in the lookup dictionary. Therefore, if newKey
is different from the key that is embedded in item
, you cannot access item
by using the key returned by GetKeyForItem.
This method does nothing if the KeyedCollection<TKey,TItem> does not have a lookup dictionary.
Every key in a KeyedCollection<TKey,TItem> must be unique. A key cannot be null
.
This method is an O(1) operation.
Notes for implementers
Before modifying the key embedded in an item, you must call this method to update the key in the lookup dictionary. If the dictionary creation threshold is -1, calling this method is not necessary.
Do not expose the ChangeItemKey method as a public method of a derived class. Misuse of this method puts the lookup dictionary out of sync with item keys. For example, setting the key to null
and then setting it to another value adds multiple keys for an item to the lookup dictionary. Expose this method internally to allow mutable item keys: When the key for an item changes, this method is used to change the key in the lookup dictionary.